Compression of digital video data is performed for many applications including transmission over bandwidth-constrained channels, such as direct broadcast satellite, and storage on optical media. To achieve very efficient compression, complex, computationally intensive processes are used for encoding (i.e., compressing) and decoding (i.e., decompressing) the digital video data. For example, though MPEG-2 (Moving Pictures Expert Group, International Organization for Standards, Geneva, Switzerland) is known as a very efficient method for compressing video, more efficient standards are being developed, such as the H.264 standard (“Advanced Video Coding”, International Telecommunication Union Telecommunication Standardization Sector, Geneva, Switzerland).
Conventional video compression methods use some sort of entropy coding. Motion vectors and other overhead and transform coefficients are all compressed using entropy coding. Many types of well-known entropy compression techniques exist, including Huffman encoding and context-adaptive binary arithmetic coding (CABAC).
The H.264 standard obtains a higher efficiency in compression than MPEG-2. The H.264 standard is believed to utilize only 50-60% of the bit-rate used by MPEG-2 for the same quality of video. To achieve the higher efficiency, many sophisticated, processing intensive, tools are used with the H.264 standard. For example, MPEG-2 uses Huffman encoding, whereas H.264 supports both Huffman encoding and CABAC.
Another tool that H.264, MPEG-4 and H.263 (“Video Coding For Low Bit Rate Communications”, International Telecommunication Union Telecommunication Standardization Sector, Geneva, Switzerland) uses is a deblocking loop filter. After a basic decoding (i.e., entropy decode, transform coefficient scaling, transform and motion compensation) a filter is applied to the decoded image to reduce the blocky appearance that compression can cause. The filtering is done “in the loop”, that is, the filtered frame is used as a reference for frames that are subsequently decode and used for motion compensation.
The H.264 standard also allows macroblocks to be sent out of order. When the macroblocks are sent out of order and the CABAC format is used, the conventional methods do not allow for basic decoding and deblocking of the same picture in parallel. The reason is that the macroblocks in a CABAC stream cannot be decoded out of the original order. If the original transmission order is not a raster order, the decoding order cannot be the raster order. When conventional methods are used for decoding a stream that has out-of-order macroblocks and CABAC, basic decoding and deblocking cannot be performed in parallel. In a conventional approach where the decoding and deblocking are performed in series, the deblocking circuits or the decoding circuits will be idle at any given time and thus work twice as fast. When using special purpose hardware (i.e., application specific integrated circuits, application specific standard products and field programmable gate arrays), the hardware processes roughly twice as fast normal which significantly increases the cost and power consumption of the device.